﻿using System;
using System.Collections.Generic;
using System.Linq;
using Controller2.BLL;

namespace Controller2.Models.ViewModels
{
    public class CidadeViewModel
    {
        public int ID { get; set; }
        public string Nome { get; set; }
        public string Estado { get; set; }

        public IEnumerable<CidadeViewModel> Listar(ControllerBDModelContainer db, string texto, int filtro)
        {
            IEnumerable<CidadeViewModel> cid;
            int codigo = 0;
            if (filtro == 1)
            {
                if (!Int32.TryParse(texto, out codigo))
                {
                    filtro = 0;
                    texto = "";
                }
            }
            if (string.IsNullOrWhiteSpace(texto) || texto.Equals("Digite sua pesquisa"))
            {
                filtro = 0;
                texto = "";
            }
            switch (filtro)
            {
                default:
                    cid = from c in CidadeBll.GetAllCidades(db)
                          orderby c.IdCidade
                          select new CidadeViewModel
                          {
                              ID = c.IdCidade,
                              Nome = c.NomeCidade,
                              Estado = c.Estado.NomeEstado + " ( " + c.Estado.Sigla + " )"
                          };
                    break;
                case 1:
                    cid = from c in CidadeBll.GetAllCidades(db)
                          orderby c.IdCidade
                          where c.IdCidade == codigo
                          select new CidadeViewModel
                          {
                              ID = c.IdCidade,
                              Nome = c.NomeCidade,
                              Estado = c.Estado.NomeEstado + " ( " + c.Estado.Sigla + " )"
                          };
                    break;
                case 2:
                    cid = from c in CidadeBll.GetAllCidades(db)
                          orderby c.IdCidade
                          where c.NomeCidade.Contains(texto.ToUpper())
                          select new CidadeViewModel
                          {
                              ID = c.IdCidade,
                              Nome = c.NomeCidade,
                              Estado = c.Estado.NomeEstado + " ( " + c.Estado.Sigla + " )"
                          };
                    break;
                case 3:
                    cid = from c in CidadeBll.GetAllCidades(db)
                          orderby c.IdCidade
                          where c.Estado.NomeEstado.Contains(texto.ToUpper()) || c.Estado.Sigla.Contains(texto.ToUpper())
                          select new CidadeViewModel
                          {
                              ID = c.IdCidade,
                              Nome = c.NomeCidade,
                              Estado = c.Estado.NomeEstado + " ( " + c.Estado.Sigla + " )"
                          };
                    break;
            }

			return cid.OrderBy(o => o.ID);
        }
    }
}